package cn.tedu.log.service.impl;

import cn.tedu.log.mapper.LogMapper;
import cn.tedu.log.utils.LogModel;
import cn.tedu.log.pojo.dto.LogListDTO;
import cn.tedu.log.pojo.vo.LogListVO;
import cn.tedu.log.pojo.vo.LogPageListVO;
import cn.tedu.log.service.LogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class LogServiceImpl implements LogService {
    @Autowired
    private LogMapper logMapper;

    /**
     * 分页查询
     *
     * @param logListDTO
     * @return
     */
    @Override
    public LogPageListVO selectPage(LogListDTO logListDTO) {
        //设置分页的页码和每页显示条数
        logListDTO.setQueryPage(logListDTO.getPage() - 1);
        logListDTO.setQueryPageSize(logListDTO.getPage() * logListDTO.getPageSize());
        //根据页码数据分页查询
        List<LogListVO> list = logMapper.selectPage(logListDTO);
        //循环结果为logListVO的model赋值(具体model_id代表的模块)
        for (LogListVO logListVO : list) {
            logListVO.setModel(LogModel.fromId(logListVO.getModelId()).getDescription());
        }
        //将分页查询的结果和分页数据组装到LogPageListVO类,因为前端需要用到后端返回的页码等数据
        LogPageListVO logPageListVO = new LogPageListVO();
        logPageListVO.setRecords(list);
        //查询包含前端传参筛选后的总条数(前端用此数据来确定总页码)
        logPageListVO.setTotal(logMapper.selectCount(logListDTO));
        //设置每页显示条数(前端虽然有这个数据,这个数据也是前端传的(可不传,默认15),但是前端可能在操作DOM时丢失参数,故需要后端兜底)
        logPageListVO.setPageSize(logListDTO.getPageSize());
        //设置当前页码(理由同上,默认1)
        logPageListVO.setCurrent(logListDTO.getPage());
        return logPageListVO;
    }
}
